package com.sushuo.api.dao;


import java.io.Serializable;
import java.util.List;
import java.util.Map;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.NoRepositoryBean;

import com.sushuo.base.bean.sql.Sort;
import com.sushuo.base.bean.sql.PageData;

@NoRepositoryBean
public interface BaseDao<T, ID extends Serializable> extends JpaRepository<T, ID>, JpaSpecificationExecutor<T>  {
    
    /**
     * @Description: (通过有顺序的参数查询) 
     * @author zhangzijie
     * @updateTime 2017年8月18日 下午5:39:43
     */
    List<Map<String, Object>> findMapBySqlHasParamOrder(String sql, Map<Integer, Object> params);
    
    /**
     * 
     * @Title: count 
     * @Description: (获取总数量) 
     * @author zhangzijie
     * @updateTime 2017年8月19日 下午2:26:32
     */
    public int count(String sql, Map<Integer, Object> params);
    
    public <R> List<R> findBeanBySql(String sql, List<Object> param, Class<R> classes);
    
    public List<Map<String, Object>> findListMapBySql(String sql, List<Object> param);
    
    public PageData<T> findPageBySql(String sql, List<Object> param, Class<T> classes,
            PageData<T> pageData, Sort sort);
}
